package com.tedu.api.thread;

/**
 * 线程：单线程、多线程
 * 单线程：按照顺序执行线程，主方法就是主线程 main
 * 多线程：创建多条线程，做不同的事情
 * 多线程并发：创建多条线程，”同时“做相同的事情
 *
 * 案例：创建 Chef 类 实现Runnable
 *             私有属性 dishName
 *             run（） 功能：{提示语句：开始准备+dishName
 *                          模拟准备时间：阻塞 1~3秒
 *                          Math.random() 随机生成0.0~1.0的浮点数值（不包含1.0）
 *                                    提示语句：dishName+准备完成
 *                             }
 *
 *          主方法 实现 创建两个线程 两个厨子 chef1   【不需要Lambda】
 *                                      chef2
 */
public class Kitchen {
    public static void main(String[] args) {
        //第一个美食家---老八秘制小汉堡
        Thread chef1=new Thread(new Chef("老八秘制小汉堡"));
        //第二个美食家---鸡架拌饭
        Thread chef2=new Thread(new Chef("鸡架拌饭"));

        chef1.start();
        chef2.start();

    }
}
//创建厨子类
class Chef implements  Runnable{
    private String disName;
    //厨子创建”同时“完成菜肴制作---构造器：区分厨师制作菜肴
    public Chef(String dn){
        this.disName=dn; //来美食家 this.dishName=“鸡架拌饭”
                         //this当前对象--Chef

    }
    public void run() {
        System.out.println("开始准备"+disName);
        //模拟厨师准备时间：1~3秒
        //1.Math.random() 获取0.0~1.0范围值【不包括1.0】
        //2.Math.random()*3000,得到范围值：0.0~3000.0【不包括3000.0】
        //  范围值：0.0~2999.0   0~2   随即范围：0~2
        //3.成3000范围，强转long类型 (long) (Math.random()*3000)
        //  范围值：0~2999 秒数：1~2
        //4.加1000 (long) (Math.random()*3000)+1000
        //  返回值：1~3秒
        try {
            Thread.sleep((long) (Math.random()*3000)+1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(disName+"准备完成~赤吧你~");
    }
}



